home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 2 / Mac Magazin and MacEasy Magazine CD - Issue 02.iso / Sharewarebibliothek / Applikationen / Alpha.5.81 folder / Tcl / SystemCode / marks.tcl < prev    next >
Text File  |  1994-06-16  |  2KB  |  82 lines

  1.  
  2. # ================================================================================
  3. # Clear marks for front window.
  4. #================================================================================
  5. proc clearFileMarks {} {
  6.     set nm [lindex [winNames -f] 0]
  7.     
  8.     foreach mk [getNamedMarks] {
  9.         if {$nm == [lindex $mk 1]} {
  10.             removeNamedMark -n [lindex $mk 0] -w [lindex $mk 1]
  11.         }
  12.     }
  13. }
  14.  
  15.  
  16. proc sortMarksFile {} {
  17.     set nm [lindex [winNames -f] 0]
  18.     
  19.     set mks {}
  20.     foreach mk [getNamedMarks] {
  21.         if {$nm == [lindex $mk 1]} {
  22.             removeNamedMark -n [lindex $mk 0] -w [lindex $mk 1]
  23.             lappend mks $mk
  24.         }
  25.     }
  26.  
  27.     foreach mk [lsort $mks] {
  28.         set name [lindex $mk 0]
  29.         set disp [lindex $mk 2]
  30.         set pos [lindex $mk 3]
  31.         set end [lindex $mk 4]
  32.         
  33.         setNamedMark $name $disp $pos $end
  34.     }
  35. }
  36.  
  37.  
  38.  
  39. # ================================================================================
  40. # Simple mark stack implementation
  41. # ================================================================================
  42. proc pushMark {} {
  43.     global markStack
  44.     global markName
  45.     
  46.     set name mark$markName
  47.     incr markName
  48.     createTMark $name [getPos]
  49.     set fileName [lindex [winNames -f] 0]
  50.     set markStack [linsert $markStack 0 [list $fileName $name]]
  51.     message [concat Mark [llength $markStack] Pushed]
  52. }
  53.  
  54. proc popMark {} {
  55.     global markStack
  56.     if {[llength $markStack] == "0"} {
  57.         alertnote "The mark stack is empty!"
  58.         return
  59.     }
  60.     set mark [lindex [lindex $markStack 0] 1]
  61.     set markStack [lreplace $markStack 0 0]
  62.     if {[catch {gotoTMark $mark}]} {
  63.         popMark
  64.         return
  65.     }
  66.     message [concat Mark [llength $markStack] Popped]
  67. }
  68.  
  69.     
  70. # Returns 'list' minus all top-level elements matching 'pat'.
  71. # Used in 'closeHooks' to prune the mark stack.
  72. proc removePat {list pat} {
  73.     while 1 {
  74.         set ind [lsearch $list $pat]
  75.         if {$ind == "-1"} {return $list}
  76.         set list [lreplace $list $ind $ind]
  77.     }
  78. }
  79.  
  80.  
  81.  
  82.